home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / you-075a.lha / you-075a / semaphores.em < prev    next >
Text File  |  1992-06-18  |  1KB  |  64 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: sems.em
  4. ;; Date: Tue May  5 23:23:43 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;
  9.  
  10. (defmodule semaphores
  11.   (defs
  12.    extras0
  13.    macros0
  14.    sems
  15.    classes
  16.    lists
  17.    list-operators
  18.    (except (null) class-names)
  19.    initcode
  20.    calls
  21.    errors
  22.    generics
  23.    threads
  24.    ;;boot
  25.    )
  26.   ()
  27.   
  28.   (defstruct semaphore ()
  29.     ((real-sem initform (make-primitive-semaphore)
  30.            reader semaphore-real-sem))
  31.     constructor make-semaphore
  32.     predicate semaphore-p)
  33.  
  34.   (defgeneric open-semaphore (sem))
  35.   (defgeneric close-semaphore (sem))
  36.   (defgeneric initialize-semaphore (sem))
  37.     
  38.   (defmethod open-semaphore ((x object))
  39.     (error "Wrong class for open-semaphore" Internal-Error))
  40.   
  41.   (defmethod open-semaphore ((x semaphore))
  42.     (open-primitive-semaphore (semaphore-real-sem x))
  43.     x)
  44.  
  45.   (defmethod close-semaphore ((x object))
  46.     (error "Wrong class for close-semaphore" Internal-Error))
  47.   
  48.   (defmethod close-semaphore ((x semaphore))
  49.     (close-primitive-semaphore (semaphore-real-sem x))
  50.     x)
  51.  
  52.   (defmethod initialize-semaphore ((x object))
  53.     (error "Wrong class for initialize-semaphore" Internal-Error))
  54.   
  55.   (defmethod initialize-semaphore ((x semaphore))
  56.     (initialize-primitive-semaphore (semaphore-real-sem x))
  57.     x)
  58.  
  59.   (export make-semaphore open-semaphore close-semaphore semaphore-p initialize-semaphore
  60.       semaphore)
  61.  
  62.   ;; end module
  63.   )
  64.